// 事实接收后端返回的数据
export let isRelogin = { show: false };
import { MessageBox } from 'element-ui';
import { removeToken } from '@/utils/auth';
import store from './store';
import { getIsLogin } from '@/api/login';
const baseURL = '/prod-api';
export function sse(token, callback) {
    // let flag = 
    let url = baseURL + '/general/api/sse/online?timeout=' + '7200000&' + 'clientId=' + token;
    const source = new EventSource(url);
    //大屏实时数据
    source.addEventListener('data', (e) => {
        if (callback) {
            callback()
        }
        let data = JSON.parse(e.data);
        if (e.lastEventId == 'dp-key-1') {
            //总览概化图数据实时水位数据
            if (data.code == 200) {
                store.commit("UPDATE_WATER_LEVEL", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-2') {
            //总览实时降雨量
            if (data.code == 200) {
                store.commit("UPDATE_RAIN_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-3') {
            //总览大坝安全监测
            if (data.code == 200) {
                store.commit("UPDATE_DAM_SAFE_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-4') {
            //总览年度极值统计
            if (data.code == 200) {
                store.commit("UPDATE_YEAR_WATER_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-5') {
            //总览水文预报
            if (data.code == 200) {
                store.commit("UPDATE_WATER_FORECAST_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-6') {
            //总览水质
            if (data.code == 200) {
                store.commit("UPDATE_WATER_QUALITY_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-7') {
            //总览闸门
            if (data.code == 200) {
                store.commit("UPDATE_GATE_TABLE_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-8') {
            //雨情专题雨情分布
            if (data.code == 200) {
                store.commit("UPDATE_RAIN_GRADE_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-9') {
            //雨情专题水信息统计
            if (data.code == 200) {
                store.commit("UPDATE_WATER_DETAIL_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-10') {
            //大坝专题设备列表
            if (data.code == 200) {
                store.commit("UPDATE_EQUIPMENT_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-11') {
            //大坝专题监测，设备信息
            if (data.code == 200) {
                store.commit("UPDATE_WARN_LIST_DATA", data.data)
            }
        }
        if (e.lastEventId == 'dp-key-12') {
            //天气
            if (data.code == 200) {
                store.commit("UPDATE_WEATHER_DATA", data.data)
            }
        }
    })


    source.addEventListener('message', function (e) {
        if (e.lastEventId === '4') {
            if (!isRelogin.show) {
                isRelogin.show = true;
                MessageBox.confirm(e.data, '系统提示', {
                    confirmButtonText: '重新登录',
                    cancelButtonText: '取消',
                    type: 'warning',
                })
                    .then(() => {
                        isRelogin.show = false;
                        removeToken(); //手动清除token
                        location.href = '/index';
                        // this.$store.dispatch('LogOut').then(() => {
                        //   location.href = '/index';
                        // })
                    })
                    .catch(() => {
                        isRelogin.show = false;
                    });
            }
        } else {
            if (callback) {
                callback()
            }
            store.commit('REAL_TIME_DATA', e);
        }
    });

    source.onerror = function (e) {
        console.log(e, '接受错误信息');
        // 是否登录状态
        getIsLogin()
            .then((res) => {
                if (!res.data) {
                    this.$router.push({ path: '/login' }); // path切换;
                    source.close();
                }
            })
            .catch((error) => {
                // reject(error)
                source.close();
            });
    };
}
